package br.edu.eseg.brproject.model;

// Generated May 29, 2011 12:04:47 PM by Hibernate Tools 3.4.0.CR1

import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import org.hibernate.validator.NotNull;

/**
 * Stakeholder generated by hbm2java
 */
@Entity
@Table(name = "stakeholder" , uniqueConstraints = @UniqueConstraint(columnNames = {
		"usuarioid", "projetoid" }))
public class Stakeholder implements java.io.Serializable {

	private Long id;
	private Projeto projeto;
	private Usuario usuario;
	private Boolean ccb;
	private String papel;
	private Set<Notastakeholder> notaavaliadores = new HashSet<Notastakeholder>(
			0);
	private Set<Notastakeholder> notaavaliados = new HashSet<Notastakeholder>(
			0);

	public Stakeholder() {
	}

	public Stakeholder(Projeto projeto, Usuario usuario) {
		this.projeto = projeto;
		this.usuario = usuario;
	}

	public Stakeholder(
			Projeto projeto,
			Usuario usuario,
			Boolean ccb,
			String papel,
			Set<Notastakeholder> notaavaliadores,
			Set<Notastakeholder> notaavaliados) {
		this.projeto = projeto;
		this.usuario = usuario;
		this.ccb = ccb;
		this.papel = papel;
		this.notaavaliadores = notaavaliadores;
		this.notaavaliados = notaavaliados;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id")
	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "projetoid", nullable = false)
	@NotNull
	public Projeto getProjeto() {
		return this.projeto;
	}

	public void setProjeto(Projeto projeto) {
		this.projeto = projeto;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "usuarioid", nullable = false)
	@NotNull
	public Usuario getUsuario() {
		return this.usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	@Column(name = "ccb")
	public Boolean getCcb() {
		return this.ccb;
	}

	public void setCcb(Boolean ccb) {
		this.ccb = ccb;
	}

	@Column(name = "papel")
	public String getPapel() {
		return this.papel;
	}

	public void setPapel(String papel) {
		this.papel = papel;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "stakeholderavaliador")
	public Set<Notastakeholder> getNotaavaliadores() {
		return this.notaavaliadores;
	}

	public void setNotaavaliadores(
			Set<Notastakeholder> notaavaliadores) {
		this.notaavaliadores = notaavaliadores;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "stakeholderavaliado")
	public Set<Notastakeholder> getNotaavaliados() {
		return this.notaavaliados;
	}

	public void setNotaavaliados(
			Set<Notastakeholder> notaavaliados) {
		this.notaavaliados = notaavaliados;
	}

}